/* 
 * File:   Node.hxx
 * Author: enric
 *
 * Created on 31 de enero de 2012, 18:44
 */

#ifndef NODE_HXX
#define	NODE_HXX

#include "Action.hxx"

class Node {
public:
    Node(State& state, Action* action);
    
    Action* action() { return m_action; }
    State*& state() { return m_state; }
    Node*& father() { return m_father; }
    void setFather(Node& node);
    
    bool isEvaluated();
    void setEval();
    void setHeuristics(int value);
    void setAcom(int value);
    int eval() { return this->m_eval;}
    int acom() { return this->m_acom;}
    int heuristics() { return this->m_heuristics;}
    
protected:
    Node* m_father;
    Action* m_action;
    State* m_state;
    bool m_isEvaluated;
    int m_eval;
    int m_heuristics;
    int m_acom;
};

#endif	/* NODE_HXX */

